﻿using SIIE_ERP.Codigo;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SIIE_ERP.BaseDatos.Configuracion
{
    public class dbo_Cat_Sucursal
    {
        #region Propiedades

        private string _RFC;
        private string _Usuario;

        #endregion
        
        #region Constructores

        public dbo_Cat_Sucursal(string RFC, string Usuario)
        {
            this._RFC = RFC;
            this._Usuario = Usuario;
        }

        #endregion
        
        #region INSERT

        public Respuesta Insert_Sucursal(
            	        
	        string Responsable,
	        string Nombre,
	        int Id_Serie,
            int Id_Estado,
            int Id_Pais,	        
            string Calle = "",
	        string Num_Ext = "",
	        string Num_Int = "",
	        string Entre_Calle_1 = "",
	        string Entre_Calle_2 = "",
	        string Colonia = "",
	        string Referencia = "",
	        string Población = "",
	        string CP = "",
	        string Municipio = ""	        
        )
        {
            try
            {
                string Query = @"INSERT INTO dbo_Cat_Sucursal
                             (
                                Id_Sucursal,
	                            RFC,
	                            Responsable,
	                            Nombre,
	                            Id_Serie,
	                            Calle,
	                            Num_Ext,
	                            Num_Int,
	                            Entre_Calle_1,
	                            Entre_Calle_2,
	                            Colonia,
	                            Referencia,
	                            Población,
	                            Id_Estado,
	                            Id_Pais,
	                            CP,
	                            Municipio,
	                            Fecha_Alta,
	                            Usuario_Alta,
	                            Fecha_Mantto,
	                            Usuario_Mantto
                             )
                             VALUES
                             (
                                IIF(DCount('*', 'dbo_Cat_Sucursal') = 0, 1, DMax('Id_Sucursal', 'dbo_Cat_Sucursal') + 1),
                                '@@RFC',
	                            '@@Responsable',
	                            '@@Nombre',
	                            @@Id_Serie,
	                            '@@Calle',
	                            '@@Num_Ext',
	                            '@@Num_Int',
	                            '@@Entre_Calle_1',
	                            '@@Entre_Calle_2',
	                            '@@Colonia',
	                            '@@Referencia',
	                            '@@Población',
	                            @@Id_Estado,
	                            @@Id_Pais,
	                            '@@CP',
	                            '@@Municipio',
	                            NOW(),
                                '@@Usuario_Alta',
                                NOW(),
                                '@@Usuario_Mantto'
                             )";

                Query = Query.Replace("@@RFC", this._RFC);
                Query = Query.Replace("@@Responsable", Responsable);
                Query = Query.Replace("@@Nombre", Nombre);
                Query = Query.Replace("@@Id_Serie", Id_Serie.ToString());
                
                Query = Query.Replace("@@Calle", Calle);
                Query = Query.Replace("@@Num_Ext", Num_Ext);
                Query = Query.Replace("@@Num_Int", Num_Int);
                Query = Query.Replace("@@Entre_Calle_1", Entre_Calle_1);
                Query = Query.Replace("@@Entre_Calle_2", Entre_Calle_2);
                Query = Query.Replace("@@Colonia", Colonia);
                Query = Query.Replace("@@Referencia", Referencia);
                Query = Query.Replace("@@Población", Población);
                Query = Query.Replace("@@Id_Estado", Id_Estado.ToString());
                Query = Query.Replace("@@Id_Pais", Id_Pais.ToString());
                Query = Query.Replace("@@CP", CP);
                Query = Query.Replace("@@Municipio", Municipio);                
                Query = Query.Replace("@@Usuario_Alta", this._Usuario);
                Query = Query.Replace("@@Usuario_Mantto", this._Usuario);

                return SrvDB.ExecuteQuery_Insert(Query);
                
                
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }            
        }

        #endregion

        #region UPDATE

        public Respuesta Update_Sucursal_Por_Id(
            object Id,

            string Responsable,
            string Nombre,
            int Id_Serie,
            int Id_Estado,
            int Id_Pais,
            string Calle = "",
            string Num_Ext = "",
            string Num_Int = "",
            string Entre_Calle_1 = "",
            string Entre_Calle_2 = "",
            string Colonia = "",
            string Referencia = "",
            string Población = "",
            string CP = "",
            string Municipio = ""
        )
        {
            try
            {
                string Query = @"UPDATE dbo_Cat_Sucursal SET
                                        
	                                Responsable = '@@Responsable',
	                                Nombre = '@@Nombre',
	                                Id_Serie = @@Id_Serie,
	                                Calle = '@@Calle',
	                                Num_Ext = '@@Num_Ext',
	                                Num_Int = '@@Num_Int',
	                                Entre_Calle_1 = '@@Entre_Calle_1',
	                                Entre_Calle_2 = '@@Entre_Calle_2',
	                                Colonia = '@@Colonia',
	                                Referencia = '@@Referencia',
	                                Población = '@@Población',
	                                Id_Estado = @@Id_Estado,
	                                Id_Pais = @@Id_Pais,
	                                CP = '@@CP',
	                                Municipio = '@@Municipio',
                                    Fecha_Mantto = NOW(),
                                    Usuario_Mantto = '@@Usuario_Mantto'

                                 WHERE Id_Sucursal = @@Id";
                                
                Query = Query.Replace("@@Responsable", Responsable);
                Query = Query.Replace("@@Nombre", Nombre);
                Query = Query.Replace("@@Id_Serie", Id_Serie.ToString());

                Query = Query.Replace("@@Calle", Calle);
                Query = Query.Replace("@@Num_Ext", Num_Ext);
                Query = Query.Replace("@@Num_Int", Num_Int);
                Query = Query.Replace("@@Entre_Calle_1", Entre_Calle_1);
                Query = Query.Replace("@@Entre_Calle_2", Entre_Calle_2);
                Query = Query.Replace("@@Colonia", Colonia);
                Query = Query.Replace("@@Referencia", Referencia);
                Query = Query.Replace("@@Población", Población);
                Query = Query.Replace("@@Id_Estado", Id_Estado.ToString());
                Query = Query.Replace("@@Id_Pais", Id_Pais.ToString());
                Query = Query.Replace("@@CP", CP);
                Query = Query.Replace("@@Municipio", Municipio);
                Query = Query.Replace("@@Usuario_Alta", this._Usuario);
                Query = Query.Replace("@@Usuario_Mantto", this._Usuario);
                Query = Query.Replace("@@Id", ((Int32)Id).ToString());

                return SrvDB.ExecuteQuery_Update(Query);
                
                
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }

        #endregion

        #region DELETE

        public Respuesta Delete_Sucursal_Por_Id(
            object Id
        )
        {
            try
            {
                string Query = @"DELETE FROM dbo_Cat_Sucursal 
                                    WHERE Id_Sucursal = @@Id";

                Query = Query.Replace("@@Id", ((Int32)Id).ToString());

                return SrvDB.ExecuteQuery_Delete(Query);
                
                
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }

        #endregion

        #region SELECT

        public DataTable Get_Sucursal_Por_Id(object Id)
        {

            string Query = @"SELECT A1.*,
                                    A2.Nombre AS Desc_Pais,
                                    A3.Nombre AS Desc_Estado


                            FROM 
                            ((dbo_Cat_Sucursal AS A1

                                INNER JOIN dbo_Cat_SIIE_Pais AS A2 ON A1.Id_Pais = A2.Id_SIIE_Pais)
                                INNER JOIN dbo_Cat_SIIE_Estado AS A3 ON A1.Id_Estado = A3.Id_SIIE_Estado)

                            WHERE Id_Sucursal = @@Id";

            Query = Query.Replace("@@Id", (Int32.Parse(Id.ToString()).ToString()));

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Sucursal_Por_Nombre(string Nombre)
        {

            string Query = @"SELECT A1.*,
                                    A2.Nombre AS Desc_Pais,
                                    A3.Nombre AS Desc_Estado
                            FROM 
                            ((dbo_Cat_Sucursal AS A1

                                INNER JOIN dbo_Cat_SIIE_Pais AS A2 ON A1.Id_Pais = A2.Id_SIIE_Pais)
                                INNER JOIN dbo_Cat_SIIE_Estado AS A3 ON A1.Id_Estado = A3.Id_SIIE_Estado)

                            WHERE A1.Nombre = '@@Nombre' AND A1.RFC = '@@RFC'";
            Query = Query.Replace("@@Nombre", Nombre);
            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Sucursales()
        {
            string Query = "SELECT * FROM dbo_Cat_Sucursal WHERE RFC = '@@RFC'";
            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        #endregion
    }
}
